ইভেন্ট ডেলিগেশন (Event Delegation) হলো এমন একটি কৌশল, যেখানে আপনি নির্দিষ্ট চাইল্ড এলিমেন্টের পরিবর্তে তার প্যারেন্ট বা কোনো উপরের লেভেলের এলিমেন্টে ইভেন্ট হ্যান্ডলার অ্যাটাচ করেন। এটি ডাইনামিক বা ভবিষ্যতে যুক্ত হতে পারে এমন এলিমেন্টের জন্য পারফরম্যান্স বৃদ্ধিতে সহায়ক।
কেন ইভেন্ট ডেলিগেশন দরকার?
১. ডাইনামিক এলিমেন্ট হ্যান্ডলিং
ডাইনামিকভাবে তৈরি করা (runtime-এ অ্যাড হওয়া) এলিমেন্টে সরাসরি ইভেন্ট হ্যান্ডলার অ্যাটাচ করা যায় না। ইভেন্ট ডেলিগেশন ব্যবহার করে প্যারেন্ট বা রুট এলিমেন্টে ইভেন্ট অ্যাটাচ করে এ সমস্যার সমাধান করা যায়।
২. কম ইভেন্ট হ্যান্ডলার
প্রত্যেকটি এলিমেন্টে আলাদাভাবে ইভেন্ট হ্যান্ডলার অ্যাটাচ করলে মেমরি খরচ বেড়ে যায়। ইভেন্ট ডেলিগেশনের মাধ্যমে শুধুমাত্র প্যারেন্ট বা রুট এলিমেন্টে ইভেন্ট অ্যাটাচ করে এই সমস্যা সমাধান করা যায়।
৩. সহজ রক্ষণাবেক্ষণ
একটি কেন্দ্রীয় ইভেন্ট হ্যান্ডলার থাকায় কোড সহজ হয় এবং রক্ষণাবেক্ষণে সুবিধা হয়।
কীভাবে ইভেন্ট ডেলিগেশন কাজ করে?
ইভেন্ট ডেলিগেশন ইভেন্ট বাবলিং (Event Bubbling) প্রক্রিয়ার উপর ভিত্তি করে কাজ করে। যখন একটি চাইল্ড এলিমেন্টে ইভেন্ট ঘটে, এটি প্যারেন্ট এবং উপরের লেভেলের এলিমেন্টে "বাবল আপ" করে।
jQuery-তে ইভেন্ট ডেলিগেশন ব্যবহার
jQuery-তে on() মেথড ব্যবহার করে ইভেন্ট ডেলিগেশন করা হয়।
সিনট্যাক্স:
$(parentSelector).on(event, childSelector, function() {
// ইভেন্টের জন্য কোড
});
parentSelector: যে এলিমেন্টে ইভেন্ট হ্যান্ডলার অ্যাটাচ হবে।event: ইভেন্ট টাইপ (যেমন,click,hover)।childSelector: চাইল্ড এলিমেন্ট যার জন্য ইভেন্টটি হ্যান্ডল হবে।
উদাহরণ
১. ডাইনামিক এলিমেন্টে ক্লিক ইভেন্ট হ্যান্ডল করা
<ul id="parentList">
<li>আইটেম ১</li>
<li>আইটেম ২</li>
</ul>
<button id="addItem">নতুন আইটেম যোগ করুন</button>
$(document).ready(function() {
// ডেলিগেশন পদ্ধতিতে ক্লিক ইভেন্ট
$("#parentList").on("click", "li", function() {
alert($(this).text() + " এ ক্লিক করা হয়েছে।");
});
// ডাইনামিক এলিমেন্ট যোগ
$("#addItem").click(function() {
$("#parentList").append("<li>নতুন আইটেম</li>");
});
});
২. ফর্ম ভ্যালিডেশন
<form id="mainForm">
<input type="text" name="username" class="form-input" placeholder="ইউজারনেম">
<input type="password" name="password" class="form-input" placeholder="পাসওয়ার্ড">
</form>
$(document).ready(function() {
// ইভেন্ট ডেলিগেশন ব্যবহার করে ফোকাস ইভেন্ট হ্যান্ডল
$("#mainForm").on("focus", ".form-input", function() {
$(this).css("border", "2px solid blue");
});
$("#mainForm").on("blur", ".form-input", function() {
$(this).css("border", "1px solid gray");
});
});
ইভেন্ট ডেলিগেশন ব্যবহার করার সুবিধা
- পারফরম্যান্স বৃদ্ধি
আলাদা আলাদা ইভেন্ট হ্যান্ডলার অ্যাটাচ না করে একটি প্যারেন্ট এলিমেন্টে ইভেন্ট ডেলিগেট করলে কম মেমরি ব্যবহার হয়। - ডাইনামিক এলিমেন্ট সাপোর্ট
ভবিষ্যতে তৈরি হওয়া এলিমেন্টেও ইভেন্ট হ্যান্ডল করা যায়। - কোড সহজ এবং পরিচ্ছন্ন
কেন্দ্রীয় ইভেন্ট হ্যান্ডলিং ব্যবস্থায় কোড আরও পরিষ্কার এবং পরিচালনাযোগ্য হয়।
সারাংশ
ইভেন্ট ডেলিগেশন একটি শক্তিশালী কৌশল যা ডাইনামিক কন্টেন্ট এবং বড় DOM-এর জন্য পারফরম্যান্স বৃদ্ধি করে। jQuery-র on() মেথড ব্যবহার করে সহজেই ইভেন্ট ডেলিগেশন বাস্তবায়ন করা যায়। এটি ডেভেলপমেন্টে দ্রুততা এবং রক্ষণাবেক্ষণে সাদৃশ্য নিয়ে আসে।